TOSTRING(
#version 330 core \n
#pragma optimize(on) \n

#define ATTR_POSITION	0 \n
#define ATTR_NORMAL		1 \n
#define ATTR_TEXCOORD	2 \n

layout(location = ATTR_POSITION)	in vec3 inPosition;
layout(location = ATTR_NORMAL)		in vec3 inNormal;
layout(location = ATTR_TEXCOORD)	in vec3 inTexcoord;

uniform struct Transform {
	mat4	MVP;
	mat3	Normal;
} unTransform;


out	TVertexData {
	vec3	vNormal;
	vec3	vTexcoord;
} Output;


out gl_PerVertex {
	vec4	gl_Position;
};


void main()
{
	gl_Position  	 = unTransform.MVP * vec4(inPosition, 1.0);
	Output.vTexcoord = inTexcoord;
	Output.vNormal	 = unTransform.Normal * inNormal;
}
)